package me.luger.project.fof.entity;


import me.luger.core.dao.nutz.entity.BaseEntity;
import me.luger.core.dao.nutz.entity.NutzTransient;
import org.nutz.dao.entity.annotation.*;
import com.alibaba.fastjson.annotation.JSONField;

import java.io.Serializable;
import java.util.Date;

@Table("fund_info")
public class FundInfo extends BaseEntity implements Serializable{
private static final long serialVersionUID=1L;


    /**
     * 基金外部编号
     */
    @Column("fund_ext_code")
    @Comment("基金外部编号")
    @ColDefine(type = ColType.VARCHAR, width = 255)
    @Name
    private String fundExtCode;
    /**
     * 外部数据源，0表示万得(公募)，1表示朝阳永续(私募)
     */
    @Column("fund_ext_source")
    @Comment("外部数据源，0表示万得(公募)，1表示朝阳永续(私募)")
    @ColDefine(type = ColType.INT, width = 3)
    private Integer fundExtSource;
    /**
     * 基金完整名称
     */
    @Column("fund_name_full")
    @Comment("基金完整名称")
    @ColDefine(type = ColType.VARCHAR, width = 255)
    private String fundNameFull;
    /**
     * 基金短名称
     */
    @Column("fund_name_short")
    @Comment("基金短名称")
    @ColDefine(type = ColType.VARCHAR, width = 255)
    private String fundNameShort;
    /**
     * 基金管理人
     */
    @Column("fund_management_company")
    @Comment("基金管理人")
    @ColDefine(type = ColType.VARCHAR, width = 255)
    private String fundManagementCompany;
    /**
     * 基金经理
     */
    @Column("fund_manager")
    @Comment("基金经理")
    @ColDefine(type = ColType.VARCHAR, width = 255)
    private String fundManager;
    /**
     * 基金发行初始规模
     */
    @Column("fund_issuing_sacle")
    @Comment("基金发行初始规模")
    @ColDefine(customType = "DECIMAL", width = 38)
    private Long fundIssuingSacle;
    /**
     * 
     */
    @Column("fund_type_target")
    @Comment("")
    @ColDefine(type = ColType.VARCHAR, width = 255)
    private String fundTypeTarget;
    /**
     * 
     */
    @Column("fund_type_strategy")
    @Comment("")
    @ColDefine(type = ColType.VARCHAR, width = 255)
    private String fundTypeStrategy;
    /**
     * 
     */
    @Column("fund_type_quant")
    @Comment("")
    @ColDefine(type = ColType.VARCHAR, width = 255)
    private String fundTypeQuant;
    /**
     * 
     */
    @Column("fund_type_hedging")
    @Comment("")
    @ColDefine(type = ColType.VARCHAR, width = 255)
    private String fundTypeHedging;
    /**
     * 基金基准唯一编号
     */
    @Column("fund_strategy_id")
    @Comment("基金基准唯一编号")
    @ColDefine(type = ColType.INT, width = 10)
    private Integer fundStrategyId;
    /**
     * 基金基准唯一编号
     */
    @Column("fund_benchmark_id")
    @Comment("基金基准唯一编号")
    @ColDefine(type = ColType.INT, width = 10)
    private Integer fundBenchmarkId;
    /**
     * 基金当前状态, 0表示基金已经结束，1表示未结束
     */
    @Column("fund_status")
    @Comment("基金当前状态, 0表示基金已经结束，1表示未结束")
    @ColDefine(type = ColType.INT, width = 3)
    private Integer fundStatus;
    /**
     * 基金筛选后的状态, 基金筛选后的状态0：不符合筛选规则 1：符合筛选规则
     */
    @Column("filter_status")
    @Comment("基金当前状态, 0表示基金已经结束，1表示未结束")
    @ColDefine(type = ColType.INT, width = 3)
    private Integer filterStatus;
    /**
     * 
     */
    @Column("fund_fundation_date")
    @Comment("")
    @ColDefine(type = ColType.DATE, width = 10)
    @JSONField (format="yyyy-MM-dd HH:mm:ss")
    private Date fundFundationDate;
    /**
     * 最新净值
     */
    @Column("unitNav")
    @Comment("最新净值")
    @ColDefine(customType = "DOUBLE", width = 22)
    private Double unitNav;
    /**
     * 复权累计净值(按分红再投推算)
     */
    @Column("swanav")
    @Comment("复权累计净值(按分红再投推算)")
    @ColDefine(customType = "DOUBLE", width = 22)
    private Double swanav;
    /**
     * 年化收益率
     */
    @Column("yieldAnnually")
    @Comment("年化收益率")
    @ColDefine(customType = "DOUBLE", width = 22)
    private Double yieldAnnually;
    /**
     * 最大回撤
     */
    @Column("drawdown")
    @Comment("最大回撤")
    @ColDefine(customType = "DOUBLE", width = 22)
    private Double drawdown;
    /**
     * 年化波动率
     */
    @Column("volatilityAnnually")
    @Comment("年化波动率")
    @ColDefine(customType = "DOUBLE", width = 22)
    private Double volatilityAnnually;
    /**
     * 近一年收益率
     */
    @Column("yield1y")
    @Comment("近一年收益率")
    @ColDefine(customType = "DOUBLE", width = 22)
    private Double yield1y;

    /**
     * 近三年收益率
     */
    @Column("yield3y")
    @Comment("近三年收益率")
    @ColDefine(customType = "DOUBLE", width = 22)
    private Double yield3y;

    /**
     * 近五年收益率
     */
    @Column("yield5y")
    @Comment("近五年收益率")
    @ColDefine(customType = "DOUBLE", width = 22)
    private Double yield5y;
    /**
     * 夏普比率
     */
    @Column("sharpRatio")
    @Comment("夏普比率")
    @ColDefine(customType = "DOUBLE", width = 22)
    private Double sharpRatio;
    /**
     * 累计净值
     */
    @Column("accumulateNav")
    @Comment("累计净值")
    @ColDefine(customType = "DOUBLE", width = 22)
    private Double accumulateNav;

    /**
     * 该基金净值最后一次更新时间
     */
    @Column("lastUpdateDate")
    @Comment("该基金净值最后一次更新时间")
    @ColDefine(type = ColType.DATETIME)
    @JSONField (format="yyyy-MM-dd HH:mm:ss")
    private Date lastUpdateDate;

    @Column("defaultAssetStrategyId")
    @Comment("对应资产或者策略的ID")
    @ColDefine(type = ColType.INT, width = 10)
    private Integer defaultAssetStrategyId;

    @Column("statisticDate")
    @Comment("")
    @ColDefine(type = ColType.DATETIME)
    @JSONField (format="yyyy-MM-dd HH:mm:ss")
    private Date statisticDate;

    @Column("searchKey")
    @Comment("")
    @ColDefine(type = ColType.VARCHAR,width = 512)
    private transient String searchKey;

    @NutzTransient
    private Integer assetStrategyId;

    @NutzTransient
    private boolean collect;

    public void setFundExtCode(String fundExtCode){
        this.fundExtCode=fundExtCode;
    }
    public String getFundExtCode(){
        return this.fundExtCode;
    }

    public void setFundExtSource(Integer fundExtSource){
        this.fundExtSource=fundExtSource;
    }
    public Integer getFundExtSource(){
        return this.fundExtSource;
    }

    public void setFundNameFull(String fundNameFull){
        this.fundNameFull=fundNameFull;
    }
    public String getFundNameFull(){
        return this.fundNameFull;
    }

    public void setFundNameShort(String fundNameShort){
        this.fundNameShort=fundNameShort;
    }
    public String getFundNameShort(){
        return this.fundNameShort;
    }

    public void setFundManagementCompany(String fundManagementCompany){
        this.fundManagementCompany=fundManagementCompany;
    }
    public String getFundManagementCompany(){
        return this.fundManagementCompany;
    }

    public void setFundManager(String fundManager){
        this.fundManager=fundManager;
    }
    public String getFundManager(){
        return this.fundManager;
    }

    public void setFundIssuingSacle(Long fundIssuingSacle){
        this.fundIssuingSacle=fundIssuingSacle;
    }
    public Long getFundIssuingSacle(){
        return this.fundIssuingSacle;
    }

    public void setFundTypeTarget(String fundTypeTarget){
        this.fundTypeTarget=fundTypeTarget;
    }
    public String getFundTypeTarget(){
        return this.fundTypeTarget;
    }

    public void setFundTypeStrategy(String fundTypeStrategy){
        this.fundTypeStrategy=fundTypeStrategy;
    }
    public String getFundTypeStrategy(){
        return this.fundTypeStrategy;
    }

    public void setFundTypeQuant(String fundTypeQuant){
        this.fundTypeQuant=fundTypeQuant;
    }
    public String getFundTypeQuant(){
        return this.fundTypeQuant;
    }

    public void setFundTypeHedging(String fundTypeHedging){
        this.fundTypeHedging=fundTypeHedging;
    }
    public String getFundTypeHedging(){
        return this.fundTypeHedging;
    }

    public void setFundStrategyId(Integer fundStrategyId){
        this.fundStrategyId=fundStrategyId;
    }
    public Integer getFundStrategyId(){
        return this.fundStrategyId;
    }

    public void setFundBenchmarkId(Integer fundBenchmarkId){
        this.fundBenchmarkId=fundBenchmarkId;
    }
    public Integer getFundBenchmarkId(){
        return this.fundBenchmarkId;
    }

    public void setFundStatus(Integer fundStatus){
        this.fundStatus=fundStatus;
    }
    public Integer getFundStatus(){
        return this.fundStatus;
    }

    public Integer getFilterStatus() {
        return filterStatus;
    }

    public void setFilterStatus(Integer filterStatus) {
        this.filterStatus = filterStatus;
    }

    public void setFundFundationDate(Date fundFundationDate){
        this.fundFundationDate=fundFundationDate;
    }
    public Date getFundFundationDate(){
        return this.fundFundationDate;
    }

    public void setUnitNav(Double unitNav){
        this.unitNav=unitNav;
    }
    public Double getUnitNav(){
        return this.unitNav;
    }

    public void setYieldAnnually(Double yieldAnnually){
        this.yieldAnnually=yieldAnnually;
    }
    public Double getYieldAnnually(){
        return this.yieldAnnually;
    }

    public void setDrawdown(Double drawdown){
        this.drawdown=drawdown;
    }
    public Double getDrawdown(){
        return this.drawdown;
    }

    public void setVolatilityAnnually(Double volatilityAnnually){
        this.volatilityAnnually=volatilityAnnually;
    }
    public Double getVolatilityAnnually(){
        return this.volatilityAnnually;
    }

    public void setYield1y(Double yield1y){
        this.yield1y=yield1y;
    }
    public Double getYield1y(){
        return this.yield1y;
    }

    public void setSharpRatio(Double sharpRatio){
        this.sharpRatio=sharpRatio;
    }
    public Double getSharpRatio(){
        return this.sharpRatio;
    }

    public void setAccumulateNav(Double accumulateNav){
        this.accumulateNav=accumulateNav;
    }
    public Double getAccumulateNav(){
        return this.accumulateNav;
    }

    public Double getYield3y() {
        return yield3y;
    }

    public void setYield3y(Double yield3y) {
        this.yield3y = yield3y;
    }

    public Double getYield5y() {
        return yield5y;
    }

    public void setYield5y(Double yield5y) {
        this.yield5y = yield5y;
    }

    public Date getLastUpdateDate() {
        return lastUpdateDate;
    }

    public void setLastUpdateDate(Date lastUpdateDate) {
        this.lastUpdateDate = lastUpdateDate;
    }

    public Integer getAssetStrategyId() {
        return assetStrategyId;
    }

    public void setAssetStrategyId(Integer assetStrategyId) {
        this.assetStrategyId = assetStrategyId;
    }

    public Integer getDefaultAssetStrategyId() {
        return defaultAssetStrategyId;
    }

    public void setDefaultAssetStrategyId(Integer defaultAssetStrategyId) {
        this.defaultAssetStrategyId = defaultAssetStrategyId;
    }

    public Double getSwanav() {
        return swanav;
    }

    public void setSwanav(Double swanav) {
        this.swanav = swanav;
    }

    public Date getStatisticDate() {
        return statisticDate;
    }

    public void setStatisticDate(Date statisticDate) {
        this.statisticDate = statisticDate;
    }

    public String getSearchKey() {
        return searchKey;
    }

    public void setSearchKey(String searchKey) {
        this.searchKey = searchKey;
    }

    public boolean isCollect() {
        return collect;
    }

    public void setCollect(boolean collect) {
        this.collect = collect;
    }
}